Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Introducción a la programación concurrente (página 2)




Enviado por Pablo Turmero



Partes: 1, 2

Monografias.com

Programa Secuencial. Proceso
Nivel del Sistema Operativo
Programa
Secuencial
Proceso
(Proceso Pesado)

Monografias.com

Programa Secuencial. Proceso
Nivel de un Programa Internamente
Programa Secuencial
Un conjunto de sentencias y declaración de variables
Normalmente es un procedimiento o función
Proceso
La ejecución del procedimiento o función
En un programa Pascal internamente hay solamente un único proceso
En PascalFC, puede haber varios procesos internamente
Proceso ligero, Hilo de Ejecución o Thread

Monografias.com

Programa Secuencial. Proceso
En este módulo nos centramos en los Programas Internamente

Monografias.com

Introducción a la Concurrencia
¿Qué es la concurrencia?
Programa Secuencial. Proceso
Procesos Concurrentes. Programa y sistema concurrente
Relaciones entre procesos: Competencia y Cooperación
Actividades entre procesos: Sincronización y Comunicación
¿Dónde se usa la concurrencia?
¿Cómo se usa la concurrencia?
Conclusiones

Monografias.com

Procesos Concurrentes. Programa y Sistema Concurrente
Procesos Concurrentes
P1 y P2 se dice que son dos procesos concurrentes si la primera instrucción de uno de ellos se ejecuta entre la primera y la última instrucción del otro

P1

P2
Tiempo

Monografias.com

Procesos Concurrentes. Programa y Sistema Concurrente
Programa Concurrente
Conjunto de varios programas secuenciales, cuyos procesos pueden ejecutarse concurrentemente en un sistema informático

Monografias.com

Procesos Concurrentes. Programa y Sistema Concurrente
Programa Concurrente
Nivel de Sistema Operativo
Windows es un programa concurrente
Linux es un programa concurrente
MS-DOS no es un programa concurrente
Nivel de Programa Internamente
Un programa en Pascal no es un programa concurrente
Un programa en PascalFC es un programa concurrente

Monografias.com

Procesos Concurrentes. Programa y Sistema Concurrente
Sistema Concurrente
Sistema Informático (HW+SW) en el que es posible ejecutar varios procesos concurrentemente

Monografias.com

Introducción a la Concurrencia
¿Qué es la concurrencia?
Programa Secuencial. Proceso
Procesos Concurrentes. Programa y sistema concurrente
Relaciones entre procesos: Competencia y Cooperación
Actividades entre procesos: Sincronización y Comunicación
¿Dónde se usa la concurrencia?
¿Cómo se usa la concurrencia?
Conclusiones

Monografias.com

Relaciones entre procesos: Competencia y Cooperación
Sin relación entre procesos (Independencia)
No existe ninguna relación entre los procesos (No es interesante)
Con relación entre procesos (Interacción)
Competencia
Varios procesos deben compartir recursos comunes del sistema (procesador, memoria, disco, impresoras,…) por lo que compiten entre ellos para conseguirlo
Cooperación
Varios procesos deben trabajar sobre distintas partes de un problema para resolverlo conjuntamente

Monografias.com

Relaciones entre procesos: Competencia y Cooperación
Competencia
Webcam
Por ejemplo el acceso a una web-cam es un recurso de uso exclusivo por un único programa
El primer programa que use la cámara la controla hasta que decida dejar de usarla
Cooperación
Envío de fichero por mail
Por ejemplo el OpenOffice genera un fichero en disco que debe leerse posteriormente por el lector de correo para ser enviado
Los procesos colaboran por medio de ficheros

Monografias.com

Introducción a la Concurrencia
¿Qué es la concurrencia?
Programa Secuencial. Proceso
Procesos Concurrentes. Programa y sistema concurrente
Relaciones entre procesos: Competencia y Cooperación
Actividades entre procesos: Sincronización y Comunicación
¿Dónde se usa la concurrencia?
¿Cómo se usa la concurrencia?
Conclusiones

Monografias.com

Actividades entre procesos: Sincronización y Comunicación
La competencia y la cooperación son relaciones de interacción entre procesos
Se llevan a cabo a través de las siguientes actividades
Comunicación
Sincronización
Sincronización condicional
Exclusión mutua

Monografias.com

Actividades entre procesos: Sincronización y Comunicación
Comunicación
Es el intercambio de información entre procesos
Habitualmente cuando dos procesos cooperan entre sí se intercambian información
Por ejemplo cuando un proceso quiere imprimir, envía la información al proceso encargado de la impresora

Monografias.com

Actividades entre procesos: Sincronización y Comunicación
Sincronización
La sincronización impone restricciones a la ejecución de las sentencias de los procesos

Sincronización Condicional
Uno o más procesos deben esperar a que se cumpla cierta condición antes de continuar con su ejecución
Otro proceso es el que establece esa condición
Por ejemplo para enviar un fichero por mail, el proceso que tiene que enviar el fichero se tiene que esperar hasta que éste haya sido generado por el OpenOffice

Monografias.com

Actividades entre procesos: Sincronización y Comunicación
Sincronización
La sincronización impone restricciones a la ejecución de las sentencias de los procesos

Exclusión Mutua
Varios procesos compiten por un recurso común de acceso exclusivo
Sólo uno de los procesos puede estar accediendo al recurso a la vez y los demás tienen que esperar
Por ejemplo en el caso de la webcam, sólo un proceso puede acceder a la cámara a la vez

Monografias.com

Interacción entre procesos: Sincronización y Comunicación
Relaciones entre procesos
Competencia
Cooperación
Actividades entre procesos
Sincronización
Comunicación
Sincronización
Condicional
Exclusión
Mutua
Se lleva a cabo
mediante
A veces necesita
Hay diferentes tipos

Monografias.com

Introducción a la Concurrencia
¿Qué es la concurrencia?
¿Dónde se usa la concurrencia?
Arquitecturas físicas
Asignación de Procesos a Procesadores
¿Cómo se usa la concurrencia?
Conclusiones

Monografias.com

¿Dónde se usa la concurrencia?
Arquitecturas de Sistemas Concurrentes
En este módulo no vamos a entrar en detalles de implementación
Pero vamos a dar una visión general de las diferentes arquitecturas de sistemas concurrentes

Monografias.com

Introducción a la Concurrencia
¿Qué es la concurrencia?
¿Dónde se usa la concurrencia?
Arquitecturas físicas
Asignación de Procesos a Procesadores
¿Cómo se usa la concurrencia?
Conclusiones

Monografias.com

Arquitecturas Físicas
Sistemas monoprocesador
Sistemas con un único procesador
Los PCs de sobremesa habituales hace pocos años
(Gp:) Procesador
(Gp:) Memoria
(Gp:) Entrada/Salida
(Gp:) Bus

Monografias.com

Arquitecturas Físicas
Sistemas multiprocesador muy acoplados
Varios procesadores en la misma máquina
Usado en servidores

Procesador
Entrada/Salida
Procesador
Memoria
Común
Procesador
Memoria
Local
Bus
Memoria
Común

Monografias.com

Arquitecturas Físicas
Sistemas multiprocesador muy acoplados
Actualmente se están integrando varios procesadores en un único chip
A los procesadores internos se les denomina cores o núcleos de ejecución
Al chip se le denomina “procesador”
Todos los PCs actuales tienen esta arquitectura
Procesador
Memoria
Entrada/Salida
Core
Core
Bus

Monografias.com

Arquitecturas Físicas
Sistemas multiprocesador poco acoplados
Redes de Ordenadores (Granjas de Ordenadores, LAN, Internet…)
Sistemas Distribuidos
Servidor Web
Red
Móvil
Consola
PC

Monografias.com

Arquitecturas Físicas
Modelos de Concurrencia
Memoria compartida
Los procesos pueden acceder a una memoria común
Existen variables compartidas que varios procesos pueden leer y escribir
Paso de mensajes
Los procesos se intercambian mensajes entre sí
Un proceso envía mensaje y otro proceso lo recibe

Monografias.com

Arquitecturas Físicas

Monografias.com

Arquitecturas Físicas
Vamos a centrarnos en el modelo de concurrencia de memoria compartida
El modelo de concurrencia de paso de mensajes se estudia en asignaturas de sistemas distribuidos (aplicaciones en red)

Monografias.com

Introducción a la Concurrencia
¿Qué es la concurrencia?
¿Dónde se usa la concurrencia?
Arquitecturas físicas
Asignación de Procesos a Procesadores
¿Cómo se usa la concurrencia?
Conclusiones

Monografias.com

Asignación de Procesos a Procesadores
Un procesador sólo puede ejecutar un proceso a la vez
¿Qué ocurre si hay que ejecutar más procesos que los procesadores disponibles?

Monografias.com

Asignación de Procesos a Procesadores
Multiproceso
Cada proceso se ejecuta en su propio procesador en un sistema de memoria compartida
Procesador1
Entrada/Salida
Procesador3
Memoria
Común
Proc1
Proc2
Proc3
Procesador2
Bus

Monografias.com

Asignación de Procesos a Procesadores
Procesamiento Distribuido
Cada proceso se ejecuta en su propio procesador dentro de cada máquina de una red (Programa distribuido)

Máquina 1
Router
Máquina 3
Proc1
Proc2
Proc3
Máquina 2
Impresora
Red

Monografias.com

Asignación de Procesos a Procesadores
Paralelismo Real
Se obtiene cuando hay un procesador por cada proceso
Se consigue un aumento de la velocidad de ejecución del programa con respecto a la ejecución secuencial
Paralelismo Real
Ejecución Secuencial
Proc1
Proc2
Proc1
Proc2
t
t

Monografias.com

Asignación de Procesos a Procesadores
Multiprogramación
Varios procesos se ejecutan en el mismo procesador
Cada proceso se ejecuta durante un tiempo y luego pasa a ejecutarse el siguiente proceso (Compartición de tiempo)
Entrada/Salida
Memoria
Proc2
Proc3
Procesador
Bus
Proc1

Monografias.com

Asignación de Procesos a Procesadores
Paralelismo Simulado (Pseudoparalelismo)
Se obtiene cuando varios procesos comparten el mismo procesador
El usuario percibe una sensación de paralelismo real
No se consigue un aumento de la velocidad de ejecución del programa con respecto a la ejecución secuencial

Paralelismo Simulado
Proc1
Proc2
Proc1
Proc2
Ejecución Secuencial
t
t

Monografias.com

Asignación de Procesos a Procesadores
Asignación de Procesos a Procesadores

Paralelismo Real
Aumenta la velocidad
de ejecución
Paralelismo Simulado
No aumenta la velocidad
de ejecución
En un sistema informático lo más habitual es que se use la Multiprogramación aunque disponga de varios procesadores, porque en la mayoría de las ocasiones hay más procesos que procesadores
Cada procesador ejecuta un proceso
Multiproceso
Procesamiento Distribuido
Cada procesador ejecuta varios procesos
Multiprogramación

Monografias.com

Asignación de Procesos a Procesadores
Multiproceso
Aumenta la velocidad de ejecución

Multiprogramación
No aumenta la velocidad de ejecución
Incluso puede disminuir debido a que el reparto del procesador implica un coste adicional
¿Para qué sirve entonces la multiprogramación?

Monografias.com

Asignación de Procesos a Procesadores
Ventajas de la Multiprogramación
Dar un servicio interactivo a varios usuarios simultáneamente
Servidor Web
Atiende a varios cientos de usuarios a la vez
Messenger o Pidgin
Permite conversaciones simultáneas
Pestañas Firefox o Internet Explorer
Permite descargar simultáneamente varias páginas (cada una en una pestaña) mientras navegamos

Monografias.com

Asignación de Procesos a Procesadores
Ventajas de la Multiprogramación
Ciertos tipos de aplicaciones se implementan de manera natural con programación concurrente
Aplicaciones gráficas
El programa realiza un proceso en segundo plano y también permite seguir trabajando
Eclipse compila en segundo plano
Intercambio entre pares P2P (Emule)
Se realizan descargas simultáneas de múltiples usuarios para completar el mismo fichero

Monografias.com

Asignación de Procesos a Procesadores
Ventajas de la Multiprogramación
Aprovecha mejor el procesador en procesos que se quedan esperando
Un proceso se puede bloquear a la espera de un dato del disco duro (entrada/salida)
Con Multiprogramación se puede aprovechar el procesador mientras los procesos esperan
Paralelismo Simulado
Ejecución Secuencial
Proc1
Proc2
Proc1
Proc2
Proceso
Bloqueado

Monografias.com

Asignación de Procesos a Procesadores
Ventajas de la Multiprogramación
Los sistemas operativos actuales usan la multiprogramación para ejecutar varios procesos simultáneamente
Permite:
Tener varios programas abiertos
Imprimir o copiar ficheros mientras se navega, etc…

Monografias.com

Asignación de Procesos a Procesadores
Conclusión: La multiprogramación tiene ventajas
Aplicaciones para varios usuarios
Aplicaciones que realizan varias tareas a la vez
Sistemas operativos con muchas aplicaciones
Aprovechamiento del procesador cuando los procesos necesitan esperar

Monografias.com

Asignación de Procesos a Procesadores
Hay muchas arquitecturas diferentes en las que se puede ejecutar un programa concurrente
Para hacer programas concurrentes no vamos a pensar en si existe multiproceso o existe multiprogramación
Usamos simplificaciones o abstracciones que nos ayudan a centrarnos en los procesos y sus relaciones, y nos evitan pensar en la arquitectura del sistema

Monografias.com

Asignación de Procesos a Procesadores
Esta abstracción permite tener en cuenta únicamente las interacciones entre los procesos derivadas de sus relaciones de competencia y cooperación
No nos tenemos que preocupar de si hay paralelismo real o paralelismo simulado
1ª Abstracción de la Programación Concurrente
Se considera que cada proceso se ejecuta en su propio procesador

Monografias.com

Asignación de Procesos a Procesadores
Tenemos que pensar lo que ocurriría con nuestro programa si el procesador de cada proceso tuviese una velocidad igual
También tenemos que pensar que pasaría si un procesador fuese muy lento y otro procesados fuese muy rápido
Pensar en todas las posibles situaciones permite que nuestros programas concurrentes funcionen correctamente en cualquier tipo de arquitectura y sistema
2ª Abstracción de la Programación Concurrente
Se ignoran las velocidades relativas de cada proceso, lo que posibilita considerar sólo las secuencias de instrucciones que se ejecutan

Monografias.com

Introducción a la Concurrencia
¿Qué es la concurrencia?
¿Dónde se usa la concurrencia?
¿Cómo se usa la concurrencia?
PascalFC
El orden de las instrucciones
Instrucciones atómicas
Intercalación
Indeterminismo
Conclusiones

Monografias.com

PascalFC
Para estudiar el desarrollo de programas concurrentes vamos a usar PascalFC
Es un lenguaje de programación basado en una simplificación de Pascal
Está orientado a la enseñanza de la concurrencia
Desarrollado por Alan Burns and Geoff Davies en la Universidad de York
http://www-users.cs.york.ac.uk/~burns/pf.html
PascalFC está incluido en EclipseGavab
http://www.gavab.es/eclipse

Monografias.com

PascalFC
Para hacer un programa concurrente hay que hacer dos cosas
A) Crear un código que podrá ser ejecutado concurrentemente con otros códigos (crear el programa secuencial)
B) Iniciar la ejecución de ese código (crear el proceso)

Monografias.com

PascalFC
program prog;
process type pr1(par:real);
begin

end;
process type pr2(par:real);
begin

end;
var …
begin

end.
prog.pas
Se crea con las palabras reservadas process type
La sintaxis es igual a la de un procedimiento en Pascal
Puede recibir parámetros, declarar variables locales…
En PascalFC lo llamaremos tipo de proceso
Programa Secuencial

Monografias.com

PascalFC
Hay que declarar una variable con el tipo del proceso
Se hace la llamada con el nombre de la variable entre cobegin coend
Se ejecutan concurrentemente todos los procesos
Es posible crear varios procesos del mismo tipo de proceso
program prog;
process type pr1(par:real);
begin

end;
process type pr2(par:real);
begin

end;
var
vPr1:pr1;
vAPr2,vBPr2:pr2;
begin
cobegin
vPr1(5.0);
vAPr2(7.8);
vBPr2(7.5);
coend;
end.
Creación
de un proceso
prog.pas

Monografias.com

PascalFC
cobegin coend
Ejecuta de forma concurrente las llamadas a los procesos entre ellas
No importan el orden en el fichero
Se crea un proceso por llamada
Termina cuando han terminado todos los procesos

Monografias.com

Introducción a la Concurrencia
¿Qué es la concurrencia?
¿Dónde se usa la concurrencia?
¿Cómo se usa la concurrencia?
PascalFC
El orden de las instrucciones
Instrucciones atómicas
Intercalación
Indeterminismo
Conclusiones

Monografias.com

El orden de las instrucciones
En un programa secuencial, todas las instrucciones están ordenadas
Está claro el orden en el que se van ejecutando las instrucciones y la forma en la que van cambiando los valores de las variables
En la programación concurrente, diferentes ejecuciones del mismo programa pueden ejecutar las sentencias en orden diferente

Monografias.com

El orden de las instrucciones
program maxmin;
procedure min(var min,n1,n2:real);
begin
if n1 < n2 then
min:=n1 else min:=n2;
end;
procedure max(var max,n1,n2:real);
begin
if n1 > n2 then
max:=n1 else max:=n2;
end;
var
n1,n2,nmax,nmin:real;
begin
n1:=3; n2:=5; (*I0*)
min(nmin,n1,n2); (*I1*)
max(nmax,n1,n2); (*I2*)
writeln(nmax,nmin) (*I3*)
end.
I0
I1
I2
I3
La Relación de Precedencia (->) entre las instrucciones define una relación de orden
I0 -> I1 -> I2 -> I3
Programación Secuencial

Orden Total
Diagrama de Precedencia

Monografias.com

El orden de las instrucciones
Existe determinismo
Al ejecutar el programa con los mismos datos de entrada se obtienen los mismos resultados

Hay veces que no es necesario que una sentencia sea ejecutada antes que otra, se podrían ejecutar en cualquier orden ¿Cómo lo podríamos especificar en el código?
Programación Secuencial

Orden Total
I0
I1
I2
I3
Diagrama de Precedencia

Monografias.com

El orden de las instrucciones
program maxmincon;
process type min(var min,n1,n2:real);
begin
if n1< n2 then min:=n1 else min:=n2;
end;
process type max(var max,n1,n2:real);
begin
if n1>n2 then max:=n1 else max:=n2;
end;
var
n1,n2,nmax,nmin:real;
pMax:max, pMin:min;
begin
n1:=3; n2:=5; (*I0*)
cobegin
pMin(nmin,n1,n2); (*I1*)
pMax(nmax,n1,n2); (*I2*)
coend;
writeln(nmax,nmin) (*I3*)
end.
I0
(Gp:) I1
(Gp:) I2

I3
I0->I1, I0–>I2, I1->I3,I2->I3

I1 || I2
Programación Concurrente

Orden Parcial
Diagrama de Precedencia

Monografias.com

El orden de las instrucciones
(Gp:) Programación Concurrente

Orden Parcial

(Gp:) I0
(Gp:) I1
(Gp:) I2
(Gp:) I3

No existe determinismo
No se restringe el orden de ejecución de I1 e I2. Podrían ejecutarse en cualquier ordena o de forma concurrentemente
I1 || I2
Diagrama de Precedencia

Monografias.com

Introducción a la Concurrencia
¿Qué es la concurrencia?
¿Dónde se usa la concurrencia?
¿Cómo se usa la concurrencia?
PascalFC
El orden de las instrucciones
Instrucciones atómicas
Intercalación
Indeterminismo
Conclusiones

Monografias.com

Instrucciones atómicas
1ª Abstracción de la Programación Concurrente
Se considera que cada proceso se ejecuta en su propio procesador
2ª Abstracción de la Programación Concurrente
Se ignoran las velocidades relativas de cada proceso, lo que posibilita considerar sólo las secuencias de instrucciones que se ejecutan
Recordatorio

Monografias.com

Instrucciones atómicas
La 1ª y 2ª abstracción nos permiten olvidarnos de detalles como el número de procesadores y su velocidad
Nos permiten pensar en la secuencia de instrucciones que ejecuta cada proceso
¿Exactamente qué instrucciones ejecuta un proceso?

Monografias.com

Instrucciones atómicas
Una instrucción atómica es aquella cuya ejecución es indivisible
O se ejecuta completamente o no se ejecuta, nunca se queda “a medias”
Durante la ejecución de una sentencia atómica, otros procesos no pueden interferir en su ejecución

Monografias.com

Instrucciones atómicas
Las instrucciones atómicas se usan mucho aplicaciones empresariales
Ejemplo: Reserva de vuelo con escala
Un viajero quiere ir de Madrid a Los Ángeles
Tiene que hacer escala en New York
Se debe reservar el billete Madrid-New York y también de New York-Los Ángeles
La reserva no se puede quedar a medias, reservando sólo un trayecto
O se reservan ambos trayectos o no se reserva ninguno

Monografias.com

Instrucciones atómicas
En programación concurrente, es muy importante conocer las instrucciones atómicas que ejecuta el procesador
Esas instrucciones atómicas serán las que se ejecuten completamente sin interferencias de otros procesos
Pero hay que tener en cuenta que si una sentencia en PascalFC se ejecuta como varias sentencias atómicas, es posible que otros procesos interfieran con ella

Monografias.com

Instrucciones atómicas
x:=x+1
LOAD R,x
ADD R,#1
STR R,x
Sentencia PascalFC
Instrucciones Atómicas
Corresponde a las intrucciones atómicas
Incrementar una variable en 1
Carga la variable x en el registro R del procesador
Suma 1 al registro R del procesador
Guarda el valor del registro R en la variable x

Monografias.com

Introducción a la Concurrencia
¿Qué es la concurrencia?
¿Dónde se usa la concurrencia?
¿Cómo se usa la concurrencia?
PascalFC
El orden de las instrucciones
Instrucciones atómicas
Intercalación
Indeterminismo
Conclusiones

Monografias.com

Intercalación (Interleaving)
La 1ª y 2ª abstracción nos permiten pensar en la secuencia de instrucciones que ejecuta cada proceso en su procesador
Pero es bastante complicado pensar en la ejecución en paralelo de múltiples secuencias de instrucciones (una por cada proceso)
Lo que se hace para estudiar el comportamiento de un programa concurrente es considerar que todas las sentencias de todos los procesos se intercalan en una única secuencia

Monografias.com

Intercalación (Interleaving)
No hay solapamientos
La ejecución de dos instrucciones atómicas en paralelo tiene los mismos resultados que una después de otra
3ª Abstracción de la Programación Concurrente
Se considera que las secuencias de ejecución de las acciones atómicas de todos los procesos se intercalan en una única secuencia

Monografias.com

Intercalación (Interleaving)
No hay que estudiar una única intercalación de instrucciones
Todas las intercalaciones son posibles
Hay que estudiar lo que ocurre en todas las posibles intercalaciones de instrucciones atómicas para comprender el comportamiento del programa en cualquier ejecución

Monografias.com

Intercalación (Interleaving)
Multiprogramación
Realmente las instrucciones se ejecutan de forma intercalada
Multiproceso
Si dos instrucciones compiten por un mismo recurso, el hardware las secuencializa
Si dos instrucciones no compiten, son independientes, el resultado es el mismo en paralelo que secuencializado

Monografias.com

Intercalación (Interleaving)
Todas las abstracciones se pueden resumir en sólo una
Esta abstracción nos permite estudiar el comportamiento de los programas concurrentes
Abstracción de la Programación Concurrente
Es el estudio de las secuencias de ejecución intercalada de las instrucciones atómicas de los procesos secuenciales (Ben-Ari, 1990)

Monografias.com

Introducción a la Concurrencia
¿Qué es la concurrencia?
¿Dónde se usa la concurrencia?
¿Cómo se usa la concurrencia?
PascalFC
El orden de las instrucciones
Instrucciones atómicas
Intercalación
Indeterminismo
Conclusiones

Monografias.com

Indeterminismo
Al ejecutar un programa concurrente, se ejecutarán las sentencias con una intercalación determinada y se obtendrá un resultado
Puesto que todas las intercalaciones de instrucciones atómicas son posibles, un mismo programa puede obtener resultados diferentes en diferentes ejecuciones
Cuando un mismo programa obtiene resultados diferentes dependiendo de la ejecución concreta, se dice que es indeterminista

Monografias.com

Indeterminismo
BLP (06-07)
program incdec;
process type inc(var x:integer);
begin x:=x+1; end;

process type dec(var x:integer);
begin x:=x-1; end;
var
x:integer;
pInc:inc; pDec:dec;
begin
x:=0;
cobegin
pInc(x);
pDec(x);
coend;
writeln(x)
end.
LOAD R,x
ADD R,#1
STR R,x
Instrucciones atómicas del tipo de proceso inc
LOAD R2,x
SUB R2,#1
STR R2,x
Instrucciones atómicas del tipo de proceso dec

Monografias.com

Indeterminismo
Una posible intercalación de instrucciones
Resultado Final: 1
(Gp:) LOAD R,x
ADD R,#1
STR R,x
(Gp:) inc

(Gp:) LOAD R2,x
SUB R2,#1
STR R2,x
(Gp:) dec

Monografias.com

Indeterminismo
Otra posible intercalación de instrucciones
Resultado Final: -1
(Gp:) LOAD R,x
ADD R,#1
STR R,x
(Gp:) inc

(Gp:) LOAD R2,x
SUB R2,#1
STR R2,x
(Gp:) dec

Monografias.com

Indeterminismo
Otra más…

(Gp:) LOAD R,x
ADD R,#1
STR R,x
(Gp:) inc

(Gp:) LOAD R2,x
SUB R2,#1
STR R2,x
(Gp:) dec

Resultado Final: 0
Como se deben considerar todas las posibles intercalaciones, también hay que considerar que un proceso se ejecute completamente antes que el otro

Monografias.com

Indeterminismo
Se han encontrado tres intercalaciones posibles de las instrucciones atómicas de un programa concurrente en las que se obtiene un resultado diferente

Hay 20 posibles intercalaciones
En sólo 2 de ellas se obtiene un 0
En 9 intercalaciones se obtiene un 1
En 9 intercalaciones se obtiene un -1

Monografias.com

Introducción a la Concurrencia
¿Qué es la concurrencia?
¿Dónde se usa la concurrencia?
¿Cómo se usa la concurrencia?
Conclusiones

Monografias.com

Conclusiones
Ventajas de la Concurrencia
Aumento de la eficiencia: Aprovechamiento de procesador o procesadores
Hay tipos de programas que necesitan llevar a cabo varias tareas de forma concurrente y por tanto es obligatoria la concurrencia
La posibilidad te tener tareas “en primer plano” y tareas en segundo plano
Tareas en primer plano: Interfaz de usuario
Tareas en segundo plano: Antivirus, impresión, …

Monografias.com

Conclusiones
Ventajas de la Concurrencia
La tendencia actual para aumentar la potencia de cómputo de los sistemas informáticos consiste en la creación de procesadores con varios cores o núcleos
Sólo las aplicaciones concurrentes, que dividan las tareas que se deben realizar en varios procesos podrán aprovechar la potencia de calculo de los nuevos sistemas
Esto implica que aplicaciones que actualmente están desarrolladas de forma secuencial, sin concurrencia, deberán actualizarse para aprovechar la potencia de calculo
Apple Mac Pro.
8 cores

Monografias.com

Conclusiones
Desventajas de la Concurrencia
Desarrollar programas concurrentes es más difícil que desarrollar programas secuenciales
Son más difíciles de programar
Es más difícil comprobar que su funcionamiento es el correcto, porque hay que considerar todas las posibles intercalaciones
Que una ejecución sea correcta con unos datos de entrada no implica que todas las ejecuciones sean correctas con esos mismos datos (como ocurre con los programas secuenciales).
Hay intercalaciones “problemáticas” que pueden aparecer sólo en raras ocasiones

Monografias.com

Conclusiones
Indeterminismo
Cuando se implementa un programa concurrente se necesita controlar el indeterminismo
No obstante, hay veces que permitiendo cierto indeterminismo se consiguen programas más eficientes
Ejemplo: En la descarga de ficheros del eMule, cada usuario puede descargarse cualquier fragmento de otro usuario, sin importar cual de ellos. Restringir e imponer un orden podría reducir el rendimiento de la aplicación

Monografias.com

Yela, A.; Arroyo, F.; Fernandez, L. Teoría y Práctica del Módulo de Programación Concurrente de la Asignatura de Programación II. Departamento de Publicaciones de la E.U.I. de la Universidad Politécnica de Madrid, 1997

Palma, J.T. y otros. Programación Concurrente. Editorial Thomson, 2006
Bibliografía Básica

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter